package com.fowo.api.service;

import cn.hutool.core.lang.func.VoidFunc1;
import com.fowo.api.entity.SupplierFlowNode;
import com.fowo.api.model.supplier.flow.ContextSupplierFlow;
import com.fowo.api.model.supplier.flow.node.SupplierFlowNodeSelectDoUserResult;
import com.fowo.api.service.impl.SupplierFlowNodeServiceImpl;

import java.util.Date;
import java.util.List;

public interface SupplierFlowNodeProcess {
    /**
     * 获取节点列表
     *
     * @param enCode
     * @return
     */
    SupplierFlowNode getNode(String enCode, String node);

    /**
     * 获取执行人
     *
     * @return
     */

    List<SupplierFlowNodeSelectDoUserResult> getDoUser(String enCode, String node);

    /**
     * 供应商流程节点处理
     *
     * @param list
     * @param nodeEntity
     * @param verifyStatus
     * @param func1
     * @param <T>
     */

    <T> void process(List<T> list, SupplierFlowNode nodeEntity, String formStatus, List<String> verifyStatus, VoidFunc1<T> func1);

    /**
     * 发送通知
     * @throws Exception
     */
    void createMsg(ContextSupplierFlow context) throws Exception;


    /**
     * 创建流程表单关系
     * @throws Exception
     */
    void createRelation(ContextSupplierFlow context) throws Exception;


}
